package com.hash;

import java.util.HashSet;

/**
 * 演示 java 中 hashcode()的 使用
 */
public class JavaHashCodeUsage {

    public static void main(String[] args) {
        /*
            基本数据类型
            java的hashcode接口只是将每一个基本数据
            类型和一个整型对应起来，这个整型怎么和
            数组中的索引值对应有其内部实现
         */
        // hash code = 42
        int a = 42;
        int a2 = 42;
        System.out.println(((Integer)a).hashCode());

        HashSet<Integer> set222 = new HashSet<>();
        set222.add(a);
        set222.add(a2);
        System.out.println("set222: " + set222.size());

        // hash code = -42
        int b = -42;
        System.out.println(((Integer)b).hashCode());

        // hash code = 561001798
        double c = 3.14234234;
        System.out.println(((Double)c).hashCode());

        // 115026
        String d = "tom";
        System.out.println(d.hashCode());

        // 自定义对象
        // 3736376
        Student tom = new Student(1, 23, "tom", "xie");
        System.out.println(tom.hashCode());

        Student tom2 = new Student(1, 23, "tom", "xie");
        System.out.println(tom2.hashCode());

        HashSet<Student> set = new HashSet<>();
        set.add(tom);
        set.add(tom2);
        System.out.println("hhhahahahh*********: "+set.size());


    }
}
